
export type NodeItem = {
    label:string,
    icon?:string,
    type:"circle-node" | "star-node" | "rect-node" | "triangle-node" | "donut-node" | 'circle' | 'rect' | 'custom',
    style?:NodeStyle,
    size?:number | number[]
}



// 创建节点的ts类型
export interface IData {
    id:string | number // 节点唯一ID
    label?:string | number // 节点名称
    type?: "circle-node" | "star-node" | "rect-node" | "triangle-node" | "donut-node" | 'circle' | 'rect' | 'custom' // 节点形状
    size?:number | [number,number] // 节点尺寸
    labelCfg?:LabelConfig // 文字配置项
    style?:NodeStyle // 节点样式配置
}
  
  // 返回的节点的数据类型
  export interface NodeItemInfo extends IData {
    custom:number // 自定义节点的数据
    x:number // 表示节点的X坐标
    y:number // 表示节点的Y坐标
  }
  
  // 节点文本的类型
  export interface LabelConfig {
    position?:'center' | 'top' | 'left' | 'right' | 'bottom' // 文本位置
    offset?:number // 文本偏移量
    style?:LabelStyle
  }
  // 节点的样式
  export interface NodeStyle {
    fill?:string // 颜色
    stroke?:string // 描边颜色
    lineWidth?:number // 边宽度
    shadowColor?:string // 阴影颜色
    shadowBlur?:number // 阴影范围
    shadowOffsetX?:number // 阴影X方向偏移量
    shadowOffsetY?:number // 阴影Y方向偏移量
    opacity?:number // 图形的透明度
    fillOpacity?:number // 填充色的透明度
    cursor?:'pointer' | 'help'| ' zoom-in'| 'not-allowed'| 'wait'| 'crosshair'| 'grab' // 鼠标经过节点的样式
  }
  // 文本的样式
  export interface LabelStyle {
    fill?:string // 文本颜色
    stroke?:string // 文本描边颜色
    lineWidth?:number // 文本描边粗细
    opacity?:number // 文本透明度 
    fontFamily?:string //文本字体
    fontSize?:number // 文本字体大小
  }
// 边配置项的类型
  export interface Action {
    id:string
    name?:string
    icon?:string
    type?:string
    model?:string
    class?:string
    action:(node:any)=> void
  }